package org.xx.armory.swing.components;

import org.xx.armory.swing.builders.UIModelClass;

import javax.swing.*;

/**
 * 输入多行文本的对话框。
 */
@UIModelClass
public class LinesInputDialog
        extends DialogPane {
    private static final int DEFAULT_VALUE_COLUMNS = 32;
    private static final int DEFAULT_VALUE_ROWS = 8;

    public LinesInputDialog(
            String prompt,
            String defaultValue
    ) {
        final JTextArea valuePane = controller().get(JTextArea.class, "textValue");
        valuePane.setText(defaultValue);

        valuePane.setColumns(getValueColumns());
        valuePane.setRows(getValueRows());
        final int preferredWidth = valuePane.getPreferredSize().width;

        controller().setText("prompt",
                             "<html><body style=\"margin:0;padding:0;width:" + preferredWidth + "px;\" >" + prompt + "</body></html>");
    }

    protected int getValueColumns() {
        return DEFAULT_VALUE_COLUMNS;
    }

    protected int getValueRows() {
        return DEFAULT_VALUE_ROWS;
    }

    /**
     * 获取输入的文本结果。
     *
     * @return 用户输入的文本结果。
     */
    public String getTextResult() {
        return getResult() == DialogPane.YES ? controller().getText("textValue") : null;
    }
}
